Ultrasonic transducers can be used for a variety of applications. These for example include proximity detection, one-dimensional rangefinding, three dimensional triangulation, data transmission, and public key transmission.
In each application, some common aspects can be shared, such as the ultrasound transducer, transmit circuitry, and receive circuitry. Other aspects are different, such as the signal processing and protocol of the transmitted and received waves.
Currently, to enable different applications a different hardware system must be designed which is a long and expensive process. What is needed is a system which can support several applications without redesign of the hardware system.
One application of ultrasound is public key cryptography. In public key cryptography, a public key and a private key are generated for each user. A user wishing to establish a private link with a second user transmits the first user's public key to the second user. The second user uses the first user's public key to encrypt the second user's key and send it back to the first user. The first user can then use the second user's key to encrypt the message the first user wishes to send to the second user.
The limitations of this process are in the key generation step and the initial exchange of key step. In the key generation step, a code is generated using a random or pseudorandom process. It is necessary that the key generation process generates enough randomness that the probability distribution function of the generated keys is uniform. If only a limited subset of keys is generated from the code generation process, the key can be guessed by those parties with prior knowledge of the probability distribution function. What is needed is a process which reliably generates random bits which can be used to generate truly random keys.
In the initial exchange of keys between two users, a third user with access to the infrastructure on which the keys are exchanged can insert themselves with a man-in-the-middle attack. In such an attack, the public keys of each of the first two users are replaced during transit with the key(s) of the attacking party. The two users do not know that they are not communicating directly. What is needed is a way to exchange keys using a medium of transfer which is not easily susceptible to monitoring by a third party.